前一篇我們只做到把 Pod 建立起來,但如果要讓 Pod 之間可以互相溝通,或讓人從外部跟存取叢集,還需要建立 Service 物件才行。
儘管每個 Pod 有一個獨立的 IP 位址,但這些都是只是虛擬 IP (virtual IP),如果沒有 Service 物件的協助,我們還是無法從外部來接觸到這些資源。
如果說第一步是建立 deployment 物件,那建立 Service 物件,肯定就是第二步驟了。
<NodeIP>:<NodePort>
建立一個 nginx-deployment
kubectl create deployment nginx-deployment --image nginx
# 輸出結果
# deployment.apps/nginx-deployment created
查看 deployment
kubectl get deployment
# 輸出結果
# NAME               READY   UP-TO-DATE   AVAILABLE   AGE
# nginx-deployment   1/1     1            1           72s
替這個 deployment 建立一個 service
kubectl expose deploy nginx-deployment --type=LoadBalancer --port=80 --name=nginx-service
查看 service
kubectl get svc/nginx-service
# 輸出結果
# NAME            TYPE           CLUSTER-IP    EXTERNAL-IP       PORT(S)        AGE
# nginx-service   LoadBalancer   10.15.241.2   107.167.176.121   80:32566/TCP   65s

或用 yaml 的方式來建立 service 物件
kubectl apply -f nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-deployment
  name: nginx-service
spec:
  type: LoadBalancer
  ports:
    - port: 80
  selector:
    app: nginx-deployment